package com.cssw.fyzb.core.dao.live;

import com.cssw.fyzb.core.model.dodb.CmfAnchor;
import com.cssw.fyzb.core.model.dodb.CmfAnchorBlacklist;
import com.cssw.fyzb.core.model.dodb.CmfAnchorManage;
import com.cssw.fyzb.core.model.dodb.CmfAnchorSensitive;
import com.ydn.dbframe.plugin.activerecord.Page;

import java.util.List;

public interface AnchorDao {

    /**
     * 通过主播id获取主播信息
     *
     * @return
     */
    CmfAnchor queryAnchorById(Long anchorId);

    /**
     * 通过用户id获取主播信息
     *
     * @return
     */
    CmfAnchor queryAnchorByUserId(Long userId);

    /**
     * 修改主播状态
     *
     * @return
     */
    void queryAnchorSaveSate(Long anchorId, Long userId, String status);

    Boolean queryAnchorSaveSate(Long anchorId, String status);

    /**
     * 修改直播状态
     *
     * @param anchorId 主播标识
     * @param live     直播状态 1-直播中 2-直播结束
     */
    void updateLiveByAnchor(Long anchorId, String live);

    /**
     * 开始直播
     *
     * @param anchorId 主播标识
     */
    void startLive(Long anchorId, String thumb, String title);

    //查询黑名单
    public CmfAnchorBlacklist queryAnchorBlacklistById(Long id);

    /**
     * 查询用户是否在黑名单
     *
     * @param anchorId
     * @param userId
     * @return
     */
    public CmfAnchorBlacklist queryAnchorBlacklist(Long anchorId, Long userId);

    /**
     * 加入黑名单
     *
     * @param anchorId
     * @param userId
     * @return
     */
    public Long addAnchorBlacklist(Long anchorId, Long userId);

    /**
     * 踢出黑名单
     *
     * @param id
     * @return
     */
    public void removeAnchorBlacklistById(Long id);

    /**
     * 获取黑名单
     *
     * @return
     */
    public Page<CmfAnchorBlacklist> listAnchorBlacklist(Long anchorId, Integer pageNumber, Integer pageSize);

    /**
     * 获取黑名单
     *
     * @return
     */
    public List<CmfAnchorBlacklist> listAnchorBlacklist(Long anchorId);

    /**
     * 查询管理员
     *
     * @return
     */
    public CmfAnchorManage queryAnchorManageById(Long id);

    /**
     * 查询管理员
     *
     * @return
     */
    public CmfAnchorManage queryAnchorManage(Long anchorId, Long userId);

    /**
     * 增加管理员
     *
     * @param anchorId
     * @param userId
     * @return
     */
    public Long addAnchorManage(Long anchorId, Long userId);

    /**
     * 删除管理员
     *
     * @param id
     * @return
     */
    public void removeAnchorManageById(Long id);

    /**
     * 获取管理员列表
     *
     * @return
     */
    public Page<CmfAnchorManage> listAnchorManage(Long anchorId, Integer pageNumber, Integer pageSize);

    /**
     * 获取管理员列表
     *
     * @return
     */
    public List<CmfAnchorManage> listAnchorManage(Long anchorId);

    /**
     * 查询敏感词
     *
     * @param id
     * @return
     */
    public CmfAnchorSensitive queryAnchorSensitiveById(Long id);

    /**
     * 查询敏感词
     *
     * @param anchorId
     * @param keyWord
     * @return
     */
    public CmfAnchorSensitive queryAnchorSensitive(Long anchorId, String keyWord);

    /**
     * 添加敏感词
     *
     * @param anchorId
     * @param keyWord
     * @return
     */
    public Long addAnchorSensitive(Long anchorId, String keyWord);

    /**
     * 删除敏感词
     *
     * @param id
     * @return
     */
    public void removeAnchorSensitiveById(Long id);

    /**
     * 敏感词列表
     *
     * @return
     */
    public Page<CmfAnchorSensitive> listAnchorSensitive(Long anchorId, Integer pageNumber, Integer pageSize);

    /**
     * 主播列表
     */
    public Page<CmfAnchor> listAnchor(int page, int limit, String search);

    /**
     * 开通直播
     *
     * @return java.lang.Long
     * @Param [userId]
     **/
    Long saveAnchor(Long userId);


    void updateTitle(Long anchorId, String title);

    void updateThumb(Long anchorId, String thumb);

    CmfAnchor getUserId(Long userId);
}
